home *** CD-ROM | disk | FTP | other *** search
- if(!§§pop())
- {
- _root.Tree = new Object();
- _root.Tree.nCount = 0;
- var nIndent = 10;
- var nSpace = 2;
- var selectedNode = undefined;
- var nDelay = 1;
- var nCloseCount = 0;
- var lastClicked = undefined;
- var stateSetIn = 0;
- var stateOnIn = 1;
- var stateIn = 2;
- var stateSetOut = 3;
- var stateOnOut = 4;
- var stateOut = 5;
- var bookHeight = 0;
- var pageHeight = 0;
- var urlHeight = 0;
- var typeBook = "typeBook";
- var typePage = "typePage";
- var typeURL = "typeURL";
- TreeNode.prototype.OnClick = function(clickedData)
- {
- if(this.Owner != undefined)
- {
- if(this.Owner != selectedNode)
- {
- selectedNode.object.Unselect();
- this.Owner.object.Select();
- selectedNode = this.Owner;
- }
- }
- if(selectedNode.type_str == typeBook)
- {
- selectedNode.bStarted = true;
- selectedNode.bWait = false;
- selectedNode.nDelayCount = 0;
- if(!selectedNode.bExpanded || selectedNode.bContractingNow)
- {
- selectedNode.object.OpenBook();
- selectedNode.bOpen = true;
- selectedNode.bExpanded = true;
- selectedNode.bContractingNow = false;
- GetPositions();
- UpdateNodePositions();
- selectedNode.pfnClicked(selectedNode.clickedData);
- selectedNode.nCurNode = 0;
- lastClicked = selectedNode;
- if(!selectedNode.bChunked)
- {
- selectedNode.timerClip_mc.onEnterFrame = selectedNode.ExpandNode;
- }
- }
- else
- {
- selectedNode.object.CloseBook();
- selectedNode.bContractingNow = true;
- selectedNode.pfnClicked(selectedNode.clickedData);
- selectedNode.nCurNode = selectedNode.nNodeCount - 1;
- selectedNode.timerClip_mc.onEnterFrame = selectedNode.ContractNode;
- }
- }
- else
- {
- selectedNode.pfnClicked(selectedNode.clickedData);
- }
- };
- TreeNode.prototype.MakeInvisible = function()
- {
- fhtooltip_comp.RemoveTooltip(this.object.textNode_mc.userTextField_mc);
- this.object.MakeInvisible();
- this.object.Destroy();
- delete this.object;
- this.object = undefined;
- if(this.bExpanded)
- {
- this.bOpen = false;
- }
- this.bCreated = false;
- };
- TreeNode.prototype.MakeVisible = function()
- {
- if(this.type_str == typeBook)
- {
- this.object = tocArt_mc.CreateNewBook(this.OnClick,clickedData);
- this.object.bIsBookOpen = this.bExpanded;
- }
- else if(this.type_str == typePage)
- {
- this.object = tocArt_mc.CreateNewPage(this.OnClick,clickedData);
- }
- else if(this.type_str == typeURL)
- {
- this.object = tocArt_mc.CreateNewUrl(this.OnClick,clickedData);
- }
- this.object.Owner = this;
- this.object.SetText(this.title);
- this.object.MakeVisible();
- fhtooltip_comp.AddTooltip(this.object.textNode_mc.userTextField_mc,this.title);
- this.bCreated = true;
- };
- TreeNode.prototype.AddNewNode = function(newNode)
- {
- this.treeNode_array[this.nNodeCount] = newNode;
- newNode.NodeParent = this;
- newNode.nLevel = this.nLevel + 1;
- newNode.xPos = this.xPos + nIndent;
- newNode.nNodeIndex = this.nNodeCount;
- newNode.MakeInvisible();
- this.nNodeCount = this.nNodeCount + 1;
- };
- TreeNode.prototype.ExpandNode = function()
- {
- if(!this.Owner.bWait)
- {
- if(this.Owner.treeNode_array[this.Owner.nCurNode].posObj.relPos + curRootPosition > Stage.height - tocYPosition)
- {
- var startedNode = this.Owner.NodeStartedExpand();
- debug_trace("Started Node = " + startedNode.title);
- if(lastClicked == startedNode)
- {
- if(startedNode.posObj.relPos - this.Owner.treeNode_array[this.Owner.nCurNode].objHeight + curRootPosition > 0)
- {
- bDisableScroll = true;
- _global.NavHost.SetScrollPosition(- curRootPosition,"Contents");
- bDisableScroll = false;
- curRootPosition -= this.Owner.treeNode_array[this.Owner.nCurNode].objHeight;
- }
- else if(curRootPosition != - startedNode.posObj.relPos)
- {
- curRootPosition = - startedNode.posObj.relPos;
- }
- else
- {
- this.Owner.nCurNode = this.Owner.OpenOffScreen(this.Owner.nCurNode);
- }
- }
- else
- {
- this.Owner.nCurNode = this.Owner.OpenOffScreen(this.Owner.nCurNode);
- }
- }
- if(this.Owner.nCurNode < this.Owner.nNodeCount)
- {
- var curNode = this.Owner.treeNode_array[this.Owner.nCurNode];
- if(curNode.bExpanded)
- {
- curNode.bWait = false;
- curNode.nDelayCount = 0;
- curNode.nCurNode = 0;
- curNode.timerClip_mc.onEnterFrame = this.Owner.ExpandNode;
- this.Owner.bWait = true;
- }
- if(curNode.bCreated && curNode.nState == stateOut)
- {
- curNode.bCreated = false;
- }
- curNode.nState = stateSetIn;
- UpdateDisplay(topVisibleIndex,curRootPosition);
- this.Owner.nCurNode = this.Owner.nCurNode + 1;
- }
- else
- {
- this.onEnterFrame = undefined;
- this.Owner.NodeParent.bWait = false;
- if(this.Owner.bStarted)
- {
- bDisableScroll = true;
- SetScrollBarRange();
- _global.NavHost.SetScrollPosition(- curRootPosition,"Contents");
- bDisableScroll = false;
- this.Owner.bStarted = false;
- }
- }
- }
- };
- TreeNode.prototype.OpenOffScreen = function(nNodeIndex)
- {
- while(this.treeNode_array[nNodeIndex].posObj.relPos + curRootPosition > Stage.height - tocYPosition && nNodeIndex < this.nNodeCount)
- {
- var curNode = this.treeNode_array[nNodeIndex];
- if(curNode.nState > stateIn)
- {
- curNode.nState = stateIn;
- }
- if(curNode.bExpanded)
- {
- curNode.OpenOffScreen(0);
- }
- nNodeIndex++;
- }
- return nNodeIndex;
- };
- TreeNode.prototype.OpenNoTransition = function(nNodeIndex)
- {
- while(nNodeIndex < this.nNodeCount)
- {
- var curNode = this.treeNode_array[nNodeIndex];
- if(curNode.nState > stateIn)
- {
- curNode.nState = stateIn;
- }
- if(curNode.bExpanded)
- {
- curNode.OpenOffScreen(0);
- }
- nNodeIndex++;
- }
- return nNodeIndex;
- };
- TreeNode.prototype.ContractNode = function()
- {
- if(!this.Owner.bWait)
- {
- if(this.Owner.treeNode_array[this.Owner.nCurNode].posObj.relPos + curRootPosition > Stage.height - tocYPosition)
- {
- this.Owner.nCurNode = this.Owner.CloseOffScreen(this.Owner.nCurNode);
- }
- if(this.Owner.nCurNode >= 0)
- {
- var curNode = this.Owner.treeNode_array[this.Owner.nCurNode];
- if(curNode.bExpanded)
- {
- curNode.bWait = false;
- curNode.nDelayCount = 0;
- curNode.nCurNode = curNode.nNodeCount - 1;
- curNode.timerClip_mc.onEnterFrame = this.Owner.ContractNode;
- this.Owner.bWait = true;
- }
- else
- {
- curNode.nState = stateSetOut;
- }
- UpdateDisplay(topVisibleIndex,curRootPosition);
- this.Owner.nCurNode--;
- }
- else if(this.Owner.bStarted && this.Owner.ParentStartedContract())
- {
- this.Owner.bStarted = false;
- this.Owner.bExpanded = false;
- this.Owner.bContractingNow = false;
- this.Owner.nState = stateSetOut;
- if(this.Owner.NodeParent.nCurNode + 1 == this.Owner.nNodeIndex)
- {
- this.Owner.NodeParent.bWait = false;
- }
- }
- else if(this.Owner.bStarted)
- {
- this.Owner.bStarted = false;
- this.Owner.bExpanded = false;
- this.Owner.bContractingNow = false;
- this.onEnterFrame = this.Owner.CloseFinished;
- }
- else
- {
- this.onEnterFrame = undefined;
- this.Owner.nState = stateSetOut;
- this.Owner.NodeParent.bWait = false;
- }
- }
- };
- TreeNode.prototype.NodeStartedExpand = function()
- {
- var curNode = this;
- while(!curNode.bStarted)
- {
- curNode = curNode.NodeParent;
- }
- return curNode;
- };
- TreeNode.prototype.ParentStartedContract = function()
- {
- var bResult = false;
- var curNode = this.NodeParent;
- while(!curNode.bStarted && !curNode.bContractingNow && curNode != undefined)
- {
- curNode = curNode.NodeParent;
- }
- if(curNode != undefined)
- {
- bResult = true;
- }
- return bResult;
- };
- TreeNode.prototype.CloseFinished = function()
- {
- if(this.Owner.treeNode_array[0].nState == stateOnOut || this.Owner.treeNode_array[0].nState == stateSetOut)
- {
- UpdateDisplay(topVisibleIndex,curRootPosition);
- }
- else if(this.Owner.treeNode_array[0].nState == stateOut)
- {
- this.onEnterFrame = undefined;
- GetPositions();
- SetScrollBarRange();
- UpdateDisplay(topVisibleIndex,curRootPosition);
- }
- else
- {
- this.onEnterFrame = undefined;
- }
- };
- TreeNode.prototype.CloseOffScreen = function(nNodeIndex)
- {
- while(this.treeNode_array[nNodeIndex].posObj.relPos + curRootPosition > Stage.height - tocYPosition && nNodeIndex >= 0)
- {
- var curNode = this.treeNode_array[nNodeIndex];
- curNode.nState = stateOut;
- if(curNode.bExpanded)
- {
- curNode.CloseOffScreen(curNode.nNodeCount - 1);
- }
- nNodeIndex--;
- }
- return nNodeIndex;
- };
- }
-